package crond

import (
	"sale-admin/config/redis"
	"sale-admin/internal/pkg"

	consumer "192.168.1.75/go-pkg/timer-consumer"
	"github.com/robfig/cron/v3"
)

func CrondInit() {
	crond := cron.New(cron.WithSeconds())
	// stripe_ex token检查
	crond.AddFunc("0 * * * * *", pkg.StripeEx{}.CronTokenCheck) // 每分钟检查 StripeEx token
	crond.Start()
	// 创建定时任务消费客户端
	// 参数1，redis前缀，默认system:timer-schedule
	// 参数2，系统分组，系统后台为: system-admin, 设备后台：device-admin 零售后台:sale-admin
	// 参数3，redis实例
	timerConsumer := consumer.New("system:timer-schedule:", "sale-admin", redis.NewDB())

	// 添加指定任务的处理函数
	timerConsumer.AddFunc("redemptionCodeCheck", RedemptionCodeCheck)                     // 每分钟一次，定时检查兑换码是否过期
	timerConsumer.AddFunc("saveEmptyStock", SaveEmptyStock)                               // 9点, 单日空货和连续空货
	timerConsumer.AddFunc("saveHistorySalesInfo", SaveHistorySalesInfo)                   // 2点，历史库存（存历史库存表，不需要推送）
	timerConsumer.AddFunc("autoRefund", AutoRefund)                                       // 每分钟一次，检查异常订单，出现已支付且关闭但没有出货成功的订单
	timerConsumer.AddFunc("saveGoodsClick", SaveGoodsClick)                               // 3分钟一次，上报商品点击数
	timerConsumer.AddFunc("updateCouponChild", UpdateCouponChild)                         // 3分钟一次，更改优惠码子码状态
	timerConsumer.AddFunc("faceCountSummary", FaceCountSummary)                           // 10点，机器日报表 - 曝光量汇总
	timerConsumer.AddFunc("stareCountSummary", StareCountSummary)                         // 10点，机器日报表 - 凝视数据汇总
	timerConsumer.AddFunc("goodsClickSummary", GoodsClickSummary)                         // 3点，机器日报表 - 商品点击量汇总
	timerConsumer.AddFunc("screenClickSummary", ScreenClickSummary)                       // 3点半，机器日报表 - 屏幕点击量汇总
	timerConsumer.AddFunc("taskSummary", TaskSummary)                                     // 每小时，机器日报表 - 任务汇总
	timerConsumer.AddFunc("saveRobotDailyReport", SaveRobotDailyReport)                   // 00:30，机器日报表 - 今日机器运营数据空值
	timerConsumer.AddFunc("saveYesterdayRobotDailyReport", SaveYesterdayRobotDailyReport) // 01:30，机器日报表 - 昨日机器运营数据汇总
	timerConsumer.AddFunc("goodsClickSummaryByGoods", GoodsClickSummaryByGoods)           // 01:00，商品点击量汇总--商品分组
	timerConsumer.AddFunc("shardTable", ShardTable)                                       // 自动分表
	timerConsumer.AddFunc("saveGoodsReportOrder", SaveGoodsReportOrder)                   // 每小时，更新运营日报订单【统计上一个小时】
	timerConsumer.AddFunc("batteryPowerReport", BatteryPowerReport)                       // 电量报告[上午十点，下午三点]

	// 启动

	timerConsumer.Start()
}

/*
// ============== 旧的定时任务写法 ==============
// CrondInit 定时任务初始化
func CrondInit() {
	crond := cron.New(cron.WithSeconds())
	// 商户api-token缓存
	crond.AddFunc("* * * * * *", MerchantAPITokenCacheCheck)
	crond.AddFunc("0 0 * * * *", merchant.LoadMerchantAPITokenToRedis)
	// 每隔1s钟，检测告警消息队列
	crond.AddFunc("* * * * * *", alarm.PushAlarmMsgCrond)
	crond.AddFunc("* * * * * *", SendSMS)
	// 每隔1s，推送运营报告
	crond.AddFunc("* * * * * *", OperationReportPush)
	crond.Start()
} */
